package br.com.fatecmococa.dao;

import br.com.fatecmococa.model.Cliente;
import br.com.fatecmococa.model.Transferencia;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public class TransferenciaDAO extends DAO {

       
    // construtor
    public TransferenciaDAO() {        
    }

    // método para salvar e comitar os dados no BD
    public void salvar(Transferencia transferencia) {
        try{
            begin();
            getSession().save(transferencia);
            commit();
            close();
        }catch(HibernateException e){
            e.printStackTrace();
            rollback();
        }
    }

    // método para atualizar os dados do objeto no BD
    public void atualizar(Transferencia transferencia) throws Exception{
        try{
            begin();
            getSession().update(transferencia);
            commit();
            close();
        }catch(HibernateException e){
            rollback();
        }
    }

    // método para excluir os dados do objeto
    public void excluir(Transferencia transferencia) throws Exception{
        try{
            begin();
            getSession().delete(transferencia);
            commit();
            close();
        }catch(HibernateException e){
            rollback();
        }
    }

    // método para listar todos os transferencia cadastrados
    public List<Transferencia> todosTransferencias() throws Exception{
        List lista = getSession().
                createQuery("from Transferencia").list();
        return lista;
    }     
    
     // método para listar todos os transferencia cadastrados
    public List<Transferencia> todosTransferenciasPorNConta(Integer nConta) {
        
        Query query = getSession().
                createQuery("from Transferencia t where t.clienteOrigem.nConta=:nConta or t.clienteDestino.nConta=:nConta");
         query.setParameter("nConta", nConta);
        return query.list();
    }   

}

